package com.pxst.fi.resp;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.pxst.annotations.validated.DecimalValidator;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @author notch
 * @create 2023-09-11-14:18
 */
@Data
public class FiOrderResp {
    /**
     * 银行备注 BC100里的
     */
    @ApiModelProperty("银行备注")
    private String bankNote;

    /**
     * 系统银行卡id
     */
    @ApiModelProperty("银行卡id")
    private Long cardId;

    /**
     * 充值订单表id
     */
    @ApiModelProperty("充值订单表id")
    private Long fiId;

    /**
     * 订单通知记录内容 通过foreign_key fi_id 和 模型类：充值 FI 下发 FX 代付 FO
     */
    @ApiModelProperty("订单通知记录内容")
    private String noticeContent;

    /**
     * 订单通知记录结果 订单通知记录表 on100
     */
    @ApiModelProperty("订单通知记录结果")
    private Integer noticeResult;

    @ApiModelProperty("订单通知表更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date noticeUpdatedAt;

    /**
     * 系统商户表id
     */
    @ApiModelProperty("商户id")
    private Long merchantId;

    /**
     * 商户代码 系统商户表
     */
    @ApiModelProperty("商户代码")
    private String code;

    /**
     * 充值QRpay费率% 系统商户表
     */
    @ApiModelProperty("QR充值费率")
    private BigDecimal fiQrRate;

    /**
     * 充值费率% 系统商户表
     */
    @ApiModelProperty("充值费率")
    private BigDecimal fiBankRate;

    /**
     * SMS Monitor短信监控id
     */
    @ApiModelProperty("SMS Monitor短信监控id")
    private Long smId;

    /**
     * 短信监控 比对到的时间
     */
    @ApiModelProperty("sm对账成功时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date smPairingTime;

    /**
     * 虚拟对账单主键id
     */
    @ApiModelProperty("虚拟对账单id")
    private Long vbId;

    /**
     * 虚拟对账单 比对到的时间
     */
    @ApiModelProperty("vb对账成功时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date vbPairingTime;

    /**
     * 通知状态
     */
    @ApiModelProperty("通知状态")
    private Integer action;

    /**
     * 拼接主键id D-ddmmyy + fi1100
     */
    @ApiModelProperty("充值订单号")
    private String altId;

    /**
     * 我们的单号
     */
    @ApiModelProperty("我们的单号")
    private String commandId;

    /**
     * 订单完成时间
     */
    @ApiModelProperty("订单完成时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date completedAt;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * from银行
     */
    @ApiModelProperty("充值发起银行")
    private String fromBank;

    /**
     * from银行账户
     */
    @ApiModelProperty("充值发起银行卡号")
    private String fromCardNumber;

    /**
     * isCallbackable 手动的时候才会有回调方法为true 即status为4
     */
    @ApiModelProperty("是否有回调方法")
    private Boolean isCallbackable;

    /**
     * 是否有错误日志
     */
    @ApiModelProperty("是否有错误日志")
    private Boolean isErrurl;

    /**
     * 0:未登录,1:已输入帐号密码登录
     */
    @ApiModelProperty("是否登录（0未登录，1已登录）")
    private Integer isLogIn;

    /**
     * 0:未输入OTP,1:已输入OTP
     */
    @ApiModelProperty("是否输入OTP（0:未输入OTP,1:已输入OTP）")
    private Integer isOtpIn;

    @ApiModelProperty("isRunMon")
    private Boolean isRunMon;

    /**
     * 0:未进入tuna,1:已进入tuna
     */
    @ApiModelProperty("是否进入tuna（0:未进入tuna,1:已进入tuna）")
    private Integer isTunaIn;

    /**
     * 损失金额
     */
    @ApiModelProperty("损失金额")
    private BigDecimal lossAmount;

    /**
     * 信息，讯银回传当前状态（文字）
     */
    @ApiModelProperty("信息，讯银回传当前状态（文字）")
    private String message;

    /**
     * 用户备注
     */
    @ApiModelProperty("用户备注")
    private String note;

    /**
     * 异步通知地址
     */
    @ApiModelProperty("异步通知地址")
    private String notifyUrl;

    /**
     * 用户原始提交金额
     */
    @DecimalValidator
    private BigDecimal orderAmount;

    /**
     * 实际作用金额
     */
    @DecimalValidator
    private BigDecimal paidAmount;

    /**
     * 比对方式，1: 虚拟对账单, 2: 短信对比
     */
    @ApiModelProperty("比对方式（1: 虚拟对账单, 2: 短信对比）")
    private Integer pairingBy;

    /**
     * 对帐用唯一码
     */
    @ApiModelProperty("对帐用唯一码")
    private String postscript;

    /**
     * promptpayCode BC100里的
     */
    @ApiModelProperty("")
    private String promptpayCode;

    /**
     * 系统手续费
     */
    @ApiModelProperty("系统手续费")
    private BigDecimal rate;

    /**
     * 参考编号，商户订单号
     */
    @ApiModelProperty("参考编号，商户订单号")
    private String reference;

    /**
     * 用户发起金额
     */
    @ApiModelProperty("用户发起金额")
    private BigDecimal requestAmount;

    /**
     * 讯银回传状态
     */
    @ApiModelProperty("讯银回传状态")
    private Integer status;

    /**
     * 状态明细 2:无卡
     */
    @ApiModelProperty("状态明细（2:无卡）")
    private Integer statusDescription;

    /**
     * 讯银步骤
     */
    @ApiModelProperty("讯银步骤")
    private String step;

    /**
     * toAccountCode BC100里的
     */
    @ApiModelProperty("目标银行账号")
    private String toAccountCode;

    /**
     * system_support_third_payment表
     */
    @ApiModelProperty("第三方服务器")
    private String thirdDriver;

    /**
     * 第三方串接ID
     */
    @ApiModelProperty("第三方支付公司id")
    private Long thirdId;

    /**
     * 交易模式 1.Bank网银 2.QR Code二维码 3.Crypto加密
     */
    @ApiModelProperty("交易模式（1.Bank网银 2.QR Code二维码 3.Crypto加密）")
    private Integer txnMode;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /**
     * 更新人员
     */
    @ApiModelProperty("更新人员")
    private String updater;

    /**
     * vndOtp BC100里的
     */
    @ApiModelProperty("使用OTP状态")
    private String vndOtp;

    private Boolean isTpi;

    private String currency;
}
